import logging
from logging.handlers import RotatingFileHandler
import os

# 获取项目根目录路径
project_root = os.path.abspath(os.path.dirname(__file__))

# 创建日志目录
log_directory = os.path.join(project_root, '..', 'static', 'logs')
os.makedirs(log_directory, exist_ok=True)

# 配置应用日志文件路径
app_log_file_path = os.path.join(log_directory, 'work.logs')


# 创建应用日志记录器
app_logger = logging.getLogger('app_logger')
app_logger.setLevel(logging.DEBUG)

# 创建文件处理器,使用RotatingFileHandler进行日志轮换
# 20MB 5个备份
app_file_handler = RotatingFileHandler(app_log_file_path, maxBytes=1024*1024*20, backupCount=5, encoding='utf-8')
app_file_handler.setLevel(logging.DEBUG)

# 创建控制台处理器
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.DEBUG)

# 定义日志输出格式
formatter = logging.Formatter('%(asctime)s - %(filename)s - line: %(lineno)d - %(message)s')
app_file_handler.setFormatter(formatter)
console_handler.setFormatter(formatter)

# 将处理器添加到应用日志记录器
app_logger.addHandler(app_file_handler)
app_logger.addHandler(console_handler)


# 示例应用日志记录
if __name__ == '__main__':
    app_logger.debug('这是一个调试信息')
    app_logger.info('这是一个信息日志')
    app_logger.warning('这是一个警告日志')
    app_logger.error('这是一个错误日志')
    app_logger.critical('这是一个严重错误日志')